// 名字的最大漂亮度，就要使得，越高频出现的字母，价钱越高。
#include <algorithm>
#include <iostream>
using namespace std;
//计算名字的最大可能漂亮度（最高价钱）的函数接口
int MostValuableName(string Name) {
  int Alphabet[26] = {0};  //初始化一个数组，用于记录名字中不同字母出现的次数
  int Price[26] = {
      1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13,
      14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};  //初始化一个价钱表
  int MostValuable = 0;  //初始化名字的最高价钱
  for (int i = 0; i < Name.size(); i++) {
    //大写字母的情况
    if (Name[i] >= 'A' && Name[i] <= 'Z') {
      Alphabet[Name[i] - 'A'] += 1;  //累加字母的出现次数
    }
    //小写字母的情况
    else if (Name[i] >= 'a' && Name[i] <= 'z') {
      Alphabet[Name[i] - 'a'] += 1;  //累加字母的出现次数
    }
  }
  sort(Alphabet, Alphabet + 26);
  for (int i = 0; i < 26; i++) {
    MostValuable +=
        Alphabet[i] * Price[i];  //依次取高频字母，对应地，依次取高价钱；
    //正所谓「好货不便宜，便宜无好货」，哦，好像不对，
    //应该是卖得越多的货的价钱越高，就越赚钱！！！
  }
  return MostValuable;  //返回一个名字的最大可能价钱（即漂亮度）
}
//计算多个名字的最大可能漂亮度（最高价钱）的函数接口
int MaximumPriceOfName(int Number) {
  string Name;  //字符串形式的名字
  for (int i = 0; i < Number; i++) {
    cin >> Name;                             //输入名字
    cout << MostValuableName(Name) << endl;  //输出名字的最大可能漂亮度
  }
  return 0;
}
//主函数
int main() {
  int N;  //需要计算最大可能漂亮的名字个数
  while (cin >> N) {
    MaximumPriceOfName(N);  //输出多个名字的最大可能漂亮度
  }
  return 0;
}
// 0000002
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const void* a, const void* b) { return *(int*)b - *(int*)a; }
int main() {
  int n;
  while (scanf("%d", &n) != EOF) {
    getchar();
    char s[1000000];
    while (n--) {
      gets(s);
      int len = strlen(s);
      int factor[26] = {0};
      for (int i = 0; i < len; i++) {
        factor[tolower(s[i]) - 'a']++;
      }
      qsort(factor, 26, sizeof(int), cmp);
      int beauty = 0;
      for (int i = 0; i < 26; i++) {
        beauty += factor[i] * (26 - i);
        if (factor[i] == 0) break;
      }
      printf("%d\n", beauty);
    }
  }
  return 0;
}